{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 用箱线图进行对比分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. 初始设置\n",
    "\n",
    "首先，导入所需的库，并设置中文字体等。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入所需的库\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 正常显示中文标签\n",
    "mpl.rcParams['font.sans-serif'] = ['SimHei']\n",
    "\n",
    "# 自动适应布局\n",
    "mpl.rcParams.update({'figure.autolayout': True})\n",
    "\n",
    "# 正常显示负号\n",
    "mpl.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "# 定义颜色，主色：蓝色，辅助色：灰色，互补色：橙色\n",
    "c = {'蓝色':'#00589F', '深蓝色':'#003867', '浅蓝色':'#5D9BCF',\n",
    "     '灰色':'#999999', '深灰色':'#666666', '浅灰色':'#CCCCCC',\n",
    "     '橙色':'#F68F00', '深橙色':'#A05D00', '浅橙色':'#FBC171'}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. 定义数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据源路径\n",
    "filepath='./data/问卷调查结果3.xlsx'\n",
    "\n",
    "# 读取 Excel文件\n",
    "df = pd.read_excel(filepath, index_col='调查用户')\n",
    "\n",
    "# 定义画图用的数据\n",
    "labels = df.columns\n",
    "data = df.values"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. 开始画图\n",
    "\n",
    "用「**面向对象**」的方法画图。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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m9a8nRSRVkeTjEVERCTgaIhKREREAo4CjoiIiAQcBRwREREJOAo4IiIiEnC0ikpEGu1vf/sbDofjktR1V8WDrAxffEnqaqiIiAgmT57crK8pIs1LAUdEGs3hcHDttddemsq2UKuu3bt3X7q6/di9e3eT1i8iLU9DVCIiIhJwFHBEREQk4CjgiEir0rt375ZugogEAAUcERERCTgKOCLSqmRlZbV0E0QkACjgiIiISMBRwBG5QixZsqSlmyCXiH6WIvVTwBGRVqVjx44t3QQRCQDNGnBM02zOlxORy1BCQkJLN0FEAsBFB5x169axadOmeo8rKChg9uzZ5OTk1Cp//PHHyczM9D2urKy82CaJyGVs7969Ld0EEQkAF32rhuPHjxMaGlrvce+88w69e/cmMTGRnJwcEhMTAbBarYSFheFwOFi7di27du3iqaeeol27dg1uw+7du/nwww8pLi4mKSmJu+66i/bt219wn0Qule3bt/PBBx8QEhLClClTSE5OBuDEiRMsXbqU0tJShg8fzsiRI+usZ+fOnfz973/HNE3Gjh3LL37xC7Kzs1m8eDETJ04kPT2dbdu2MXjw4OboVpOqrq5u6SZc1r744gs++ugjLBYLd999t29foezsbFasWEFFRQX/8i//wpgxY+qsJysrixUrVuB0Ohk+fDi33XYbBQUFLFiwgKFDhzJ06FB27txJWloaISEhzdE1kUap9wrOpk2b+Oyzz/jHP/7BP/7xDz799FP279/ve95qtdYbcD755BNKSkqYMGECRUVFvPrqqxw9ehQAwzD45JNPeO655wgNDW10uDlw4ABLly4lPT2dhx56CKfTqQl40iqUlZWxZs0aZs2axYMPPsjy5ct9w7SrVq1i3LhxZGRk8PHHH3Py5Em/9TgcDt566y1+97vfMX36dFavXs3p06fZtWsXU6dOZceOHVRXVysYCCUlJaxZs4YnnniCqVOnsnz5cjweDwArVqzgjjvu4Omnn+Yf//gHubm5fuvxer288cYbTJ48mWeeeYaNGzdy/Phx9u7dy7hx43xX3cvLyxVupNWq9wpOXl4eTqeTAwcOEB0dTYcOHQgPD6e0tJTg4GC8Xi+maVJRUeH7mpCQEN9J/+WXX/Lhhx8yduxYMjMzcblcdOnShWXLlvHkk08CNTuXPvLII4SEhJCXl8fp06e56qqrGtSB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JoZh4PV6fUNaXq8Xj8eD2+0mJiaGysrKJu1ToNIVHBERkQYqKytj7ty5OBwOdu3aRVxcHNHR0b7nGzI8BdC2bVs6dOjArl27cDgcZGdn061bNwD27dtHSkoKNpuNU6dOERYW1mT9CWQKOCIiIg1kt9sZNmwYGRkZfPzxx0yZMqXW89999905AWfOnDkUFBScU9fdd9/NunXrePrppxkyZIgv4JSXl2O320lJSWHt2rVcd911TdehAGaYpmm2dCNERERELiVdwREREZGAo4AjIiIiAUcBR0RERAKOlomLiIhcpOVvrsTtarrl3HdVPMjK8MV1HhMcGsa9d9/VZG243CjgiIiIXCS3q5IHN1nP+9ziW6r8PtdQdw2k3joW36L9cs6mISoREREJOAo4IiIiEnAUcERERJrQ819rNkhLUMARERGRgKOAIyIi0oSeHOBu6SZckRRwREREJOAo4IiIiEjAUcAREbnMLFmypKWbII2w7vDl+a/2cj/PLs/vuoiIyGVi/RGtomoJzRpwTNNszpcTERFpcS8NrmrpJlyRLjrgrFu3jk2bNtV7XEFBAbNnzyYnJ6dW+eOPP05mZqbe+GRAAAAfZUlEQVTvcWWltpoWkdbniy++4IknnuCPf/wjWVlZvvLs7GyefvppZsyYwX//93/XW09WVhazZs1i+vTpfPzxx0DN38dZs2axYcMGAHbu3El1dXXTdESaXbvQlm5B0zhw4ADLly+vVbZz505mzpzJjBkz+Oqrr+ot9+d8x2dnZzNz5kz27NkDwLZt2+qs46Kvmx0/fpzQ0Pp/eu+88w69e/cmMTGRnJwcEhMTAbBarYSFheFwOFi7di27du3iqaeeol27dvXW+f333zN//nwAbDYbiYmJjBo1in79+l1cp0REzlJSUsKaNWt45plnKCoqYtmyZcydO5egoCBWrFjBHXfcQdeuXXnqqadIS0sjISHhvPV4vV7eeOMNfvOb39C5c2eee+45UlNTOXDgAOPGjePzzz9n6NChlJeXExIS0sy9FGm4BQsWcPDgQfr37+8rczgcvPXWW0yfPp3g4GDmzZvH1VdfjWEY5y2PjIw8b93+6tm1axdTp07l888/5+qrr673TUC9AWfTpk243W4MwwDA4/HQuXNn+vbtC9QElPoCzieffEJJSQkPPvggRUVFvPrqqzz66KN06dIFwzD4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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用「面向对象」的方法画图，定义图片的大小\n",
    "fig, ax = plt.subplots(figsize=(8, 6))\n",
    "\n",
    "# 设置背景颜色\n",
    "fig.set_facecolor('w')\n",
    "ax.set_facecolor('w')\n",
    "\n",
    "# 设置箱体的属性\n",
    "boxprops = {'color':c['灰色']}\n",
    "# 设置中位线参数\n",
    "medianprops = {'color':c['橙色']}\n",
    "# 设置均值的属性\n",
    "meanprops = {'color':c['灰色']}\n",
    "# 设置箱线图顶端和末端线条的属性\n",
    "capprops = {'color':c['灰色']}\n",
    "# 设置须线的属性\n",
    "whiskerprops = {'color':c['灰色']}\n",
    "\n",
    "# 绘制箱线图，whis 用来控制箱须包含数据的范围，这里设置得比较大，是为了不让图中出现异常点\n",
    "bplot = ax.boxplot(data, vert=False, patch_artist=True, labels=labels, showmeans=True, whis=5, meanline=True, \n",
    "                   boxprops=boxprops, medianprops=medianprops, meanprops=meanprops, capprops=capprops, whiskerprops=whiskerprops)\n",
    "\n",
    "# 设置标题\n",
    "ax.set_title('\\n用户满意度的分布情况\\n', loc='left', size=26, color=c['深灰色'])\n",
    "\n",
    "# 倒转 Y 轴，让第一个功能排在最上面\n",
    "ax.invert_yaxis()\n",
    "\n",
    "# 隐藏 Y 轴的刻度线\n",
    "ax.tick_params(axis='y', which='major', length=0)\n",
    "\n",
    "# 设置 X 轴范围\n",
    "ax.set_xlim(0.76, 1.02)\n",
    "\n",
    "# 隐藏 X 轴\n",
    "ax.xaxis.set_visible(False)\n",
    "\n",
    "# 标记箱线代表的含义\n",
    "ax.text(min(data[:,0]), 1, '%.1f%% '%(min(data[:,0])*100)+'\\n最小值 ', ha='right', fontsize=12, color=c['深灰色'], va='center')\n",
    "ax.text(np.mean(data[:,0]), 0.7, ' %.1f%%'%(np.mean(data[:,0])*100)+'\\n 平均值', ha='center', fontsize=12, color=c['深灰色'], va='bottom')\n",
    "ax.text(np.median(data[:,0]), 1.3, ' %.1f%%'%(np.median(data[:,0])*100)+'\\n中位数', ha='center', fontsize=12, color=c['橙色'], va='top')\n",
    "ax.text(max(data[:,0]), 1, ' %.1f%%'%(max(data[:,0])*100)+'\\n 最大值', ha='left', fontsize=12, color=c['深灰色'], va='center')\n",
    "\n",
    "# 循环添加数据标签\n",
    "for i in range(1, len(labels)):\n",
    "    ax.text(min(data[:,i]), i+1, '%.1f%% '%(min(data[:,i])*100), ha='right', fontsize=12, color=c['深灰色'], va='center')\n",
    "    ax.text(np.mean(data[:,i]), i+0.7, ' %.1f%%'%(np.mean(data[:,i])*100), ha='center', fontsize=12, color=c['深灰色'], va='bottom')\n",
    "    ax.text(np.median(data[:,i]), i+1.3, ' %.1f%%'%(np.median(data[:,i])*100), ha='center', fontsize=12, color=c['橙色'], va='top')\n",
    "    ax.text(max(data[:,i]), i+1, ' %.1f%%'%(max(data[:,i])*100), ha='left', fontsize=12, color=c['深灰色'], va='center')\n",
    "\n",
    "# 填充箱体的颜色\n",
    "colors = [c['浅橙色'], c['浅橙色'], c['浅灰色'], c['蓝色'], c['蓝色']]\n",
    "for patch, color in zip(bplot['boxes'], colors):\n",
    "    patch.set_facecolor(color)\n",
    "\n",
    "# 隐藏边框\n",
    "ax.spines['top'].set_visible(False)\n",
    "ax.spines['right'].set_visible(False)\n",
    "ax.spines['bottom'].set_visible(False)\n",
    "ax.spines['left'].set_visible(False)\n",
    "\n",
    "# 设置坐标标签字体大小和颜色\n",
    "ax.tick_params(labelsize=16, colors=c['深灰色'])\n",
    "\n",
    "# 用百分比格式显示坐标轴\n",
    "def to_percent(temp, position=1):\n",
    "    return '%.0f'%(100 * temp) + '%'\n",
    "formatter = mpl.ticker.FuncFormatter(to_percent)\n",
    "ax.xaxis.set_major_formatter(formatter)\n",
    "\n",
    "plt.savefig('用户满意度的分布情况.jpeg')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " "
   ]
  }
 ],
 "metadata": {
  "file_extension": ".py",
  "kernelspec": {
   "display_name": "Python 3.7.0 64-bit",
   "language": "python",
   "name": "python37064bit2965220bd7d04cdebdae4cbe7c63b822"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  },
  "mimetype": "text/x-python",
  "name": "python",
  "npconvert_exporter": "python",
  "pygments_lexer": "ipython3",
  "version": 3
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
